package com.example.common.core.page;

import cn.hutool.core.convert.Convert;
import com.example.common.utils.ServletUtils;

/**
 * 表格数据处理
 */
public class TableSupport {

    /**
     * 当前记录起始索引
     */
    public static final String PAGE_NUM = "pageNum";

    /**
     * 每页显示记录数量
     */
    public static final String PAGE_SIZE = "pageSize";

    /**
     * 排序字段
     */
    public static final String ORDER_BY_COLUMN = "orderByColumn";

    /**
     * 排序的方向“desc"或者“asc".
     */
    public static final String IS_ASC = "isAsc";

    /**
     * 分页合理化参数，默认值为false.
     * 当启用合理化分页时（pageNum<=0 时会查询第一页，pageNum>pages时会查询最后一页），
     * 该参数会将pageNum限制在合法范围内，防止出现无效分页的情况。
     */
    public static final String REASONABLE = "reasonable";

    /**
     * 封装分页对象
     *
     * @return
     */
    public static PageDomain getPageDomain() {
        PageDomain pageDomain = new PageDomain();
        // 分页参数, Convert.toInt()方法将参数值转换为整数，
        // 如果参数值为null，则返回默认值0。
        pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM, "0")));
        //每页显示记录数量
        pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE, "0")));
        // 排序字段
        pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
        // 排序的方向“desc"或者“asc".
        pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
        // 分页参数合理化
        pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));
        return pageDomain;
    }

    public static PageDomain buildPageRequest() {
        return getPageDomain();
    }
}
